class Tree {
    constructor() {
        this.root = this
        this.value = null
        this.left = null
        this.right = null
    }
    // insNode(node, val) {
    //     let newNode = new Tree()
    //     newNode.value = val
    //     // 新插入的值 比较大
    //     if (val > node.val) {
    //         if (node.right === null) {
    //             node.right = newNode
    //         } else {
    //             this.insNode(node.right, val)
    //         }

    //     } else if (val < node.val) {
    //         if (node.left === null) {
    //             node.left = newNode
    //         } else {
    //             this.insNode(node.left, val)
    //         }

    //     }
    // }

    insNode(node, newNode) {
        // let newNode = new Tree()
        // newNode.value = val
        // 新插入的值 比较大
        // console.log("node");
        // console.log(node);
        // console.log("newNode");
        // console.log(newNode);
        // console.log("node.value");
        // console.log(node.value);
        // console.log("newNode.value");
        // console.log(newNode.value);
        if (newNode.value > node.value) {
            // console.log("ins right");
            if (node.right === null) {
                node.right = newNode
            } else {
                // this.insNode(node.right, val)
                this.insNode(node.right, newNode)
            }

        } else if (newNode.value < node.value) {
            if (node.left === null) {
                node.left = newNode
            } else {
                // this.insNode(node.left, val)
                this.insNode(node.left, newNode)
            }

        }
    }
    add(number) {

       let newNode = new Tree()
        newNode.value = number

        if (this.root === null) {
          
            // this.root=new Tree(newNode)
            this.root = newNode
            return
        }
        // this.insNode(this.root, number)
        this.insNode(this.root, newNode)
        // if(this.value>number){
        //  this.   this.add(number)
        // }
    }

    // depthOfNode(node) {
    //     if (null === node) {
    //         return 1
    //     }
    //     return this.depthOfNode(node.left) + this.depthOfNode(node.right) + 1
    // }
    // depth() {
    //     return this.depthOfNode(this.root)
    // }

    depthOfNode(node) {
     
        if (node == null) return 0;
        let leftDepth = this.depthOfNode(node.left);
        let rightDepth = this.depthOfNode(node.right);
        return 1 + Math.max(leftDepth,rightDepth);

    }
    depth() {
        return this.depthOfNode(this.root)
    }
}

// let tree = {
//     value: 8,
//     left: {
//         value: 6,
//         left: null,
//         right: {
//             value: 7,
//             left: null,
//             right: null
//         }
//     },
//     right: null
// }

let tree = new Tree()
tree.value=8
tree.left=new Tree()
tree.left.value=6
tree.left.left=null
let lr=new Tree()
lr.value=7
lr.left=null
lr.right=null
tree.left.right=lr
tree.right=null

console.log("tree");
console.log(tree);

let dep= tree.depth()
console.log("dep");
console.log(dep);

tree.add(9)
tree.add(10)

console.log("tree");
console.log(tree);


// let tree2 = new Tree()
// tree2.value=8
// console.log("tree2");
// console.log(tree2);
// tree2.add(1)
// tree2.add(2)

// console.log("tree2");
// console.log(tree2);